const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json({ limit: '20mb' }));
app.use(bodyParser.urlencoded({ limit: '20mb', extended: false }));

const fs = require('fs');
const path = require('path');
const mime = require('mime');

function tip(str) {
    return `
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title></title>
</head>
<body>
${str}
</body>
</html>        
`;
}

app.get('/', (req, res) => {
    let html = `
<a href='/jpg_preview'>jpg_preview</a>
<a href='/xlsx_preview'>xlsx_preview</a>
<a href='/zip_preview'>zip_preview</a>
<br />
<a href='/jpg_download'>jpg_download</a>
<a href='/xlsx_download'>xlsx_download</a>
<a href='/zip_download'>zip_download</a>

`;
    res.send(tip(html));
});

app.get('/jpg_preview', (req, res) => {
    let filepath = __dirname + '/1.jpg';
    res.sendFile(filepath, (err) => {
        if (err) {
            res.send("预览失败！");
            console.error(err);
        }
    });
    // try {
    //     let filepath = '1.jpg';
    //     let fileext = path.extname(filepath);
    //     let filesize = fs.statSync(filepath).size;
    //     res.header("Content-type", mime.getType(fileext));
    //     res.header("Accept-Ranges", "bytes");
    //     res.header("Accept-Length", filesize);
    //     res.end(fs.readFileSync(filepath));
    // } catch (e) {
    //     res.send("预览失败！");
    //     console.error(e);
    //     return;
    // }

});

app.get('/xlsx_preview', (req, res) => {
    let filepath = __dirname + '/1.xlsx';
    res.sendFile(filepath, (err) => {
        if (err) {
            res.send("预览失败！");
            console.error(err);
        }
    });
});

app.get('/zip_preview', (req, res) => {
    let filepath = __dirname + '/1.zip';
    res.sendFile(filepath, (err) => {
        if (err) {
            res.send("预览失败！");
            console.error(err);
        }
    });
});


app.get('/jpg_download', (req, res) => {
    // try {
    //     let filepath = '1.jpg';
    //     let title = '图片.jpg';
    //     let fileext = path.extname(filepath);
    //     let filebasename = path.basename(title, fileext);
    //     let filename = filebasename + fileext;
    //     let filesize = fs.statSync(filepath).size;
    //     // res.header("Content-type", "application/octet-stream");
    //     res.header("Content-type", mime.getType(fileext));
    //     res.header("Accept-Ranges", "bytes");
    //     res.header("Accept-Length", filesize);
    //     res.header("Content-Disposition", `attachment; filename="${encodeURI(filename)}"`);
    //     res.end(fs.readFileSync(filepath));
    // } catch (e) {
    //     res.send("下载失败！");
    //     console.error(e);
    //     return;
    // }

    res.download('1.jpg', '图片.jpg', (err) => {
        if (err) {
            res.send("下载失败！");
            console.error(err);
        }
    });

});

app.get('/xlsx_download', (req, res) => {
    // try {
    //     let filepath = '1.xlsx';
    //     let title = '表格.xlsx';
    //     let fileext = path.extname(filepath);
    //     let filebasename = path.basename(title, fileext);
    //     let filename = filebasename + fileext;
    //     let filesize = fs.statSync(filepath).size;
    //     // res.header("Content-type", "application/octet-stream");
    //     res.header("Content-type", mime.getType(fileext));
    //     res.header("Accept-Ranges", "bytes");
    //     res.header("Accept-Length", filesize);
    //     res.header("Content-Disposition", `attachment; filename="${encodeURI(filename)}"`);
    //     res.end(fs.readFileSync(filepath));
    // } catch (e) {
    //     res.send("下载失败！");
    //     console.error(e);
    //     return;
    // }

    res.download('1.xlsx', '表格.xlsx', (err) => {
        if (err) {
            res.send("下载失败！");
            console.error(err);
        }
    });
});

app.get('/zip_download', (req, res) => {
    // try {
    //     let filepath = '1.zip';
    //     let title = '压缩包.zip';
    //     let fileext = path.extname(filepath);
    //     let filebasename = path.basename(title, fileext);
    //     let filename = filebasename + fileext;
    //     let filesize = fs.statSync(filepath).size;
    //     // res.header("Content-type", "application/octet-stream");
    //     res.header("Content-type", mime.getType(fileext));
    //     res.header("Accept-Ranges", "bytes");
    //     res.header("Accept-Length", filesize);
    //     res.header("Content-Disposition", `attachment; filename="${encodeURI(filename)}"`);
    //     res.end(fs.readFileSync(filepath));
    // } catch (e) {
    //     res.send("下载失败！");
    //     console.error(e);
    //     return;
    // }

    res.download('1.zip', '压缩包.zip', (err) => {
        if (err) {
            res.send("下载失败！");
            console.error(err);
        }
    });
});

app.listen(3000);